import EventManager from "./core.mjs";

// 测试用例
function f1(a, b, c) {
    console.log('我是函数f1传入的参数有', a, b, c);
}

function f2(a, b, ) {
    console.log('我是函数f2传入的参数有', a, b);
}

function f3(a) {
    console.log('我是函数f3传入的参数有', a);
}

function f4() {
    console.log('我是函数f4，没有传入的参数');
}

let em = new EventManager();
em.on('test1', f1).once('test2', f2).on('test3', f3).once('test4', f4).on('test2', f2); // 绑定事件与函数
em.trigger('test1', 10, 20, 30).trigger("test2", 100, 200).trigger("test4", 100, 200).trigger('test2'); // 触发事件函数

em.on('test1', f1).on('test1', f2).on('test1', f3).trigger('test1', 99); // 检测是否拥有去重功能和是否会触发多层队列

em.delete("test1").status() // 测试delete方法

em.clear().status(); // 测试clear方法

function f5() {
    console.log('特殊的函数，试试在我的内部解绑某个函数');
    em.remove('test', f2);
}
em.on('test', f1).on('test', f5).on('test', f2).on('test', f3).trigger('test', 88).status(); //支持在监听器函数中删除未执行的某个事件